home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1994 October / Macformat17.cdr / Shareware City / Developers / Kamprath's CDEF Pack ƒ / CDEF Sampler Program ƒ / samplerMenus.c < prev    next >
Text File  |  1993-10-16  |  3KB  |  149 lines

  1. /*****
  2.  * bullMenus.c
  3.  *
  4.  *    Routines for Bullseye demo menus.
  5.  *
  6.  *****/
  7.  
  8. #include "samplerMenus.h"
  9.  
  10. extern    WindowPtr samplerWindow;
  11.  
  12.  
  13. MenuHandle    appleMenu, fileMenu, editMenu;
  14.  
  15. enum    {
  16.     appleID = 1,
  17.     fileID,
  18.     editID
  19.     };
  20.  
  21. enum    {
  22.     openItem = 1,
  23.     closeItem,
  24.     quitItem = 4
  25.     };
  26.  
  27.  
  28. /****
  29.  * SetUpMenus()
  30.  *
  31.  *    Set up the menus. Normally, we’d use a resource file, but
  32.  *    for this example we’ll supply “hardwired” strings.
  33.  *
  34.  ****/
  35.  
  36. void SetUpMenus(void)
  37.  
  38. {
  39.     InsertMenu(appleMenu = NewMenu(appleID, "\p\024"), 0);
  40.     InsertMenu(fileMenu = NewMenu(fileID, "\pFile"), 0);
  41.     InsertMenu(editMenu = NewMenu(editID, "\pEdit"), 0);
  42.     DrawMenuBar();
  43.     AddResMenu(appleMenu, 'DRVR');
  44.     AppendMenu(fileMenu, "\pOpen/O;Close/W;(-;Quit/Q");
  45.     AppendMenu(editMenu, "\pUndo/Z;(-;Cut/X;Copy/C;Paste/V;Clear");
  46. }
  47. /* end SetUpMenus */
  48.  
  49.  
  50. /****
  51.  *  AdjustMenus()
  52.  *
  53.  *    Enable or disable the items in the Edit menu if a DA window
  54.  *    comes up or goes away. Our application doesn't do anything with
  55.  *    the Edit menu.
  56.  *
  57.  ****/
  58.  
  59. int enable (MenuHandle menu, short item, short ok);
  60.  
  61. void AdjustMenus(void)
  62. {
  63.     register WindowPeek wp = (WindowPeek) FrontWindow();
  64.     short kind = wp ? wp->windowKind : 0;
  65.     Boolean DA = kind < 0;
  66.     
  67.     enable(editMenu, 1, DA);
  68.     enable(editMenu, 3, DA);
  69.     enable(editMenu, 4, DA);
  70.     enable(editMenu, 5, DA);
  71.     enable(editMenu, 6, DA);
  72.     
  73.     enable(fileMenu, openItem, !((WindowPeek) samplerWindow)->visible);
  74.     enable(fileMenu, closeItem, DA || ((WindowPeek) samplerWindow)->visible);
  75.  
  76. }
  77.  
  78.  
  79. static
  80. enable(MenuHandle menu, short item, short ok)
  81. {
  82.     if (ok)
  83.         EnableItem(menu, item);
  84.     else
  85.         DisableItem(menu, item);
  86. }
  87.  
  88.  
  89. /*****
  90.  * HandleMenu(mSelect)
  91.  *
  92.  *    Handle the menu selection. mSelect is what MenuSelect() and
  93.  *    MenuKey() return: the high word is the menu ID, the low word
  94.  *    is the menu item
  95.  *
  96.  *****/
  97.  
  98. void HandleMenu (long mSelect)
  99.  
  100. {
  101.     int            menuID = HiWord(mSelect);
  102.     int            menuItem = LoWord(mSelect);
  103.     Str255        name;
  104.     GrafPtr        savePort;
  105.     WindowPeek    frontWindow;
  106.     
  107.     switch (menuID)
  108.       {
  109.       case    appleID:
  110.         GetPort(&savePort);
  111.         GetItem(appleMenu, menuItem, name);
  112.         OpenDeskAcc(name);
  113.         SetPort(savePort);
  114.         break;
  115.     
  116.       case    fileID:
  117.         switch (menuItem)
  118.           {
  119.           case    openItem:
  120.             ShowWindow(samplerWindow);
  121.             SelectWindow(samplerWindow);
  122.             break;
  123.                                 
  124.           case    closeItem:
  125.             if ((frontWindow = (WindowPeek) FrontWindow()) == 0L)
  126.               break;
  127.               
  128.             if (frontWindow->windowKind < 0)
  129.               CloseDeskAcc(frontWindow->windowKind);
  130.             else if (frontWindow = (WindowPeek) samplerWindow)
  131.               HideWindow(samplerWindow);
  132.                         break;
  133.                         
  134.           case    quitItem:
  135.             ExitToShell();
  136.             break;
  137.           }
  138.         break;
  139.                   
  140.       case    editID:
  141.         if (!SystemEdit(menuItem-1))
  142.           SysBeep(5);
  143.         break;
  144.         
  145.       }
  146. }
  147. /* end HandleMenu */
  148.  
  149.